先前我們介紹了文檔檢索、查詢和聊天等功能。現今隨著企業數據量的激增,企業和組織越來越依賴數據來做出決策。然而許多用戶並不具備 SQL 編寫能力,因此 Text-to-SQL 的技術變的日益重要。LlamaIndex 也提供了 Text-to-SQL 的模組方便用戶快速部屬,透過文字檢索、查詢企業資料庫。
Text-to-sql 具備了以下優勢:
接著我們將手把手教你如何快速透過 LlamaIndex 實現 Text-to-SQL ,就跟著我們一起看下去吧!
首先我們必須先建立 DataBase ,可以透過 Docker 快速鍵立一個 MYSQL DB。
有了 DB 我們需要一個實驗的資料,大家可以選擇自己喜歡的資料或可以使用原本已有的資料庫內容。(以下資料來至政府資料開放平台)。
確認 DataBase 和 Data 都準備就緒後,我們就開始準備 LlamaIndex 的相關依賴。
pip install llama-index
pip install llama-index-llms-openai
pip install pymysql
執行以下程式碼:
import os
os.environ["OPENAI_API_KEY"] = "YOUR-API-KEY"
import llama_index.core
llama_index.core.set_global_handler("simple")
from sqlalchemy import create_engine
from llama_index.core import SQLDatabase
from llama_index.core.query_engine import NLSQLTableQueryEngine
# Connect to Data Base
# LIKE create_engine("mysql+pymysql://ithom:12345@127.0.0.1:3306/ithome_db)
engine = create_engine("mysql+pymysql://USER:PASSWORD@HOST:PORT/DB)
# Create QueryEngine: Stock → 你的表名稱
sql_database = SQLDatabase(engine, include_tables=['Stock'])
query_engine = NLSQLTableQueryEngine(
sql_database=sql_database, tables=["Stock"]
)
# Query
query_str = "成交量最高的10支股票"
response = query_engine.query(query_str)
# Result
print(response.source_nodes[0].metadata['sql_query'])
"""
Out[1]:SELECT 證券代號, 證券名稱, 成交股數
FROM Stock
ORDER BY 成交股數 DESC
LIMIT 10;
"""
print(response.source_nodes[0].metadata['result'])
# Out[2]:[('00632R', '元大台灣50反1', 232220000), ('00680L', '元大美債20正2', 103366000), ('00715L', '期街口布蘭特正2', 88539000), ('00665L', '富邦恒生國企正2', 75017000), ('00637L', '元大滬深300正2', 66850000), ('00688L', '國泰20年美債正2', 56320000), ('00650L', '復華香港正2', 32874000), ('1314', '中石化', 24754000), ('00753L', '中信中國50正2', 24549000), ('712', '復華富時不動產', 23230000)]
print(response.response)
# Out[3]:成交量最高的10支股票分別是元大台灣50反1、元大美債20正2、期街口布蘭特正2、富邦恒生國企正2、元大滬深300正2、國泰20年美債正2、復華香港正2、中石化、中信中國50正2和復華富時不動產。其中,成交股數最高的是元大台灣50反1,達到232220000股。
如果有開啟llama_index.core.set_global_handler("simple")
能觀察 LlamaIndex 已經將複雜的流程簡化成簡單的幾行程式碼,完整流程如下圖:
當然如果你想單純執行 Retrivel 功能 LlamaIndex 也提供了 NLSQLRetriever 模組,能更幫助用戶快速崁入自己的系統之中。另外也可以透過 llm、text_to_sql_prompt等參數去做更詳細的控制。
LlamaIndex 提供了一個強大的工具集,讓非技術背景的用戶也能輕鬆進行數據查詢,並將 Text-to-SQL 技術變得更加實用。透過簡單的幾行程式碼,開發者可以快速部署並運用自然語言來生成精確的 SQL 查詢,無需深入學習複雜的 SQL 語法。此外,LlamaIndex 的靈活性和擴展性,結合強大的 LLM 能力,使得查詢過程更加智能化並且能夠滿足各類業務需求。無論是對於開發者還是非技術用戶,這都大幅提升了數據檢索的效率與用戶體驗。
這樣的解決方案,讓企業在面對龐大的數據量時,能更快、更準確地獲取關鍵數據,並用於支援決策。隨著 LLM 技術的持續發展,未來我們可以預見這類工具在各行各業的應用將更加廣泛。